#include <pdf-new.h>

/**
 * \param erro_no
 * \param detalhe_no
 * \param dados_usuario
 */
void erro(HPDF_STATUS erro_no, HPDF_STATUS detalhe_no, void *dados_usuario)
	{
	printf ("ERROR: error_no=%04X, detail_no=%d\n", (unsigned int) erro_no, (int) detalhe_no);
  	throw exception();
	}

/**
 * \param filename
 * \param tipo_plan
 * \param id_api
 */
PDFNEW::PDFNEW(string filename, int tipo_plan, char *id_api)
	{
	this->pag = 1;
	this->tipo_planilha = tipo_plan;
	this->codigo_apiario = new char[12];
	strcpy(this->codigo_apiario,id_api);
	
	this->conexao = new BANCOPG(CONF_FILE);
	retorno = 0;
	Arq_PDF = filename;

	Arq_PDF.append(".pdf");
	PDF_doc = HPDF_New(erro,NULL);
	if (!PDF_doc)
		{
		cout << "Erro: não foi possível criar o objeto PDF." << endl;
		retorno = 1;
		}

	HPDF_SetInfoAttr(PDF_doc,HPDF_INFO_AUTHOR,"Jonison A. dos Santos");
	HPDF_SetInfoAttr(PDF_doc,HPDF_INFO_CREATOR,"Jonison A. dos Santos");
	HPDF_SetInfoAttr(PDF_doc,HPDF_INFO_TITLE,"Planilha de Campo");
	HPDF_SetPageMode(PDF_doc,HPDF_PAGE_MODE_USE_OUTLINE);
	Pagina = HPDF_AddPage (PDF_doc);
	HPDF_Page_SetSize(Pagina,HPDF_PAGE_SIZE_A4,HPDF_PAGE_PORTRAIT);

  	Altura = HPDF_Page_GetHeight (Pagina);
  	Largura = HPDF_Page_GetWidth (Pagina);
	}

/**
 *
 */
PDFNEW::~PDFNEW()
	{
 	this->processar();
	if (this->conexao->conectado)
		{
		delete this->conexao;
		}
	if (retorno)
		{
		cout << "erro" << endl;
		}
	HPDF_Free(PDF_doc);
	}

/**
 *
 */
void PDFNEW::processar()
	{
    string CMD;
    char *comando;
    try
    	{
        HPDF_SaveToFile(this->PDF_doc,this->Arq_PDF.c_str());
        CMD.clear();
        #if  !defined(__WIN32__) && !defined(__WIN__)
        CMD = "/usr/bin/gnome-open "+this->Arq_PDF;
        comando = new char[CMD.length()+1];
        strcpy(comando,CMD.c_str());
        system (comando);
        delete comando;
        #else
        ShellExecute(0, "open", this->Arq_PDF.c_str(), NULL, NULL, SW_SHOWDEFAULT);
        #endif
        this->retorno = 0;
        }
    catch(exception &resultado)
    	{
        cout << resultado.what() << endl;
    	this->retorno = 1;
        }
	}

/**
 *
 */
void PDFNEW::set_cabecalho()
	{
	char *texto;
	int len;
	string cabecalho;
	string dados;
	char *sqlregiao, *cod_apiario;
	vector<vector<string> >::iterator ir;
	vector<string> linha;
		
	cod_apiario= new char [10];

	cout << __FILE__ << ": " << __LINE__ << endl;
	//itoa(this->cod_apiario ,codigo_apiario,10);
	dados.clear();
	dados = "select nome, obs from cadastro.apiarios where id_api=";
	sqlregiao = new char[dados.length()+20];
	strcpy(sqlregiao,dados.c_str());
	strcat(sqlregiao,codigo_apiario);
	cout << sqlregiao << endl;
    this->conexao->executar(sqlregiao);
	if (this->conexao->registros > 0)
		{
		this->conexao->resultado();
		ir = this->conexao->resultados.begin();
		linha = *ir;
		dados.clear();
		dados=linha.at(0);
		obs_apiario.clear();
		obs_apiario = linha.at(1);
		}
	else
		{
		dados.clear();
		dados = this->conexao->mensagem;
		obs_apiario.append(sqlregiao);
		}
	delete sqlregiao;
	cout << __FILE__ << ": " << __LINE__ << endl;
	texto = new char[256];
	dst = HPDF_Page_CreateDestination (Pagina);
	HPDF_Destination_SetXYZ (dst, 0, HPDF_Page_GetHeight (Pagina), 1);
	HPDF_SetOpenAction(PDF_doc, dst);

	Font_Definida = HPDF_GetFont (PDF_doc, "Helvetica", "WinAnsiEncoding");
	HPDF_Page_SetFontAndSize (Pagina, Font_Definida, 14);

	HPDF_Page_BeginText (Pagina);
	
	Font_Definida = HPDF_GetFont (PDF_doc, "Helvetica-Bold", "WinAnsiEncoding");
	HPDF_Page_SetFontAndSize (Pagina, Font_Definida, 10);
	strcpy(texto,"APIÁRIO ");
	strcat(texto, dados.c_str());
	HPDF_Page_TextRect (Pagina,65, Altura - 60, Largura - 40, Altura - 125, converter(texto,1), HPDF_TALIGN_CENTER, NULL);
	Font_Definida = HPDF_GetFont (PDF_doc, "Helvetica-Bold", "WinAnsiEncoding");
	HPDF_Page_SetFontAndSize (Pagina, Font_Definida, 9);
	strcpy(texto,"Data da ultima Revisão: ");
	HPDF_Page_TextRect (Pagina,65, Altura - 85, Largura - 40, Altura - 55, converter(texto,1), HPDF_TALIGN_LEFT, NULL);
	Font_Definida = HPDF_GetFont (PDF_doc, "Helvetica", "WinAnsiEncoding");
	HPDF_Page_SetFontAndSize (Pagina, Font_Definida, 10);
	HPDF_Page_SetFontAndSize (Pagina, Font_Definida, 9);
	strcpy(texto,"Data: ____/____/____");
	HPDF_Page_TextRect (Pagina,65, Altura - 100, Largura - 40, Altura - 55, converter(texto,1), HPDF_TALIGN_LEFT, NULL);
	strcpy(texto,"Horario: ____:____  A  ____:____");
	HPDF_Page_TextRect (Pagina,170, Altura - 100, Largura - 40, Altura - 55, converter(texto,1), HPDF_TALIGN_LEFT, NULL);
	Font_Definida = HPDF_GetFont (PDF_doc, "Times-Italic", "WinAnsiEncoding");
	strcpy(texto,"LUA: _______");
	HPDF_Page_TextRect (Pagina,360, Altura - 100, Largura - 40, Altura - 55, converter(texto,1), HPDF_TALIGN_LEFT, NULL);
	Font_Definida = HPDF_GetFont (PDF_doc, "Times-Italic", "WinAnsiEncoding");
	HPDF_Page_SetFontAndSize (Pagina, Font_Definida, 9);
	strcpy(texto,"OBS: ");
	strcat(texto, obs_apiario.c_str());
	HPDF_Page_TextRect (Pagina,65, Altura - 115, Largura - 40, Altura - 55, converter(texto,1), HPDF_TALIGN_LEFT, NULL);
	HPDF_Page_EndText (Pagina);
	rect.left = 65;
	rect.top = Altura - 50;
	rect.right = Largura - 40;
	rect.bottom = Altura - 140;
	delete texto;
	}

/**
 *
 */
void PDFNEW::set_rodape()
	{
	char *texto, *aux;
	string TEXTO, AUX;
	int deslocamento;

	//Teste de paginação
	//this->pag = 1;
	//this->pags = 2;
	
	HPDF_Page_MoveTo (this->Pagina, 15, 40);
  	HPDF_Page_LineTo (this->Pagina, this->Largura-20, 40);
  	HPDF_Page_Stroke (this->Pagina);

	this->Font_Definida = HPDF_GetFont (this->PDF_doc, "Helvetica", "WinAnsiEncoding");
  	HPDF_Page_SetFontAndSize (this->Pagina, this->Font_Definida, 8);

	HPDF_Page_BeginText (this->Pagina);
	TEXTO.clear();
	TEXTO = "Apiários Flor Selvagem - Um caso de amor com a natureza ";
	texto = new char[TEXTO.length()+1];
	strcpy(texto,TEXTO.c_str());
	//deslocamento = strlen(texto);
	//deslocamento *= 3.5;
	//cout << deslocamento << endl;
	
	HPDF_Page_TextOut (this->Pagina, (this->Largura-570), 30, converter(texto,1));
	delete texto;
		//HPDF_Page_EndText (this->Pagina);
	TEXTO.clear();
	TEXTO = "Página ";
	aux = new char[4];
	sprintf(aux,"%d",this->pag);
	TEXTO.append(aux);
	delete aux;
	TEXTO += " de ";
	aux = new char[4];
	sprintf(aux,"%d",this->pags);
	TEXTO.append(aux);
	delete aux;
	texto = new char[TEXTO.length()+1];
	strcpy(texto,TEXTO.c_str());
	deslocamento = strlen(texto);
	deslocamento *= 3.5;
	//cout << deslocamento << endl;
	HPDF_Page_TextOut (this->Pagina, (this->Largura-20)-deslocamento, 30, converter(texto,1));
	delete texto;
	HPDF_Page_EndText (this->Pagina);
	cout<<texto<<endl;
	}

/**
 *
 */
void PDFNEW::set_texto()
	{
	string texto2;
	char *aux_tex;
	char *sql,*Data_formatada,*Aux;
	string dados, aux, AUX, data_completa;;
	int i,j, it, ajuste, alt, larg, borda_esq;
	vector<vector<string> >::iterator ir;
	vector<string> linha;
	
	ajuste=0; 
		
	alt=Altura - 145;	
	larg = Largura-80;
	borda_esq=25;
//**********************************************Criando Titulos e Retangulos de cada coluna
	for(i=1;i<=10;i++) //para ficar mais facil as mudanças na posição do retangulo
		{
		switch (i)
			{
			case 1:
				{
				HPDF_Page_Rectangle (Pagina, borda_esq, alt,  30, 15); //Pagina, margem esquerda, Altura (Margem Superior),margem direita, margem inferior da linha 
				HPDF_Page_Stroke (Pagina);
				HPDF_Page_BeginText (Pagina);
			  	Font_Definida = HPDF_GetFont (PDF_doc, "Times-Roman", "WinAnsiEncoding");
				HPDF_Page_SetFontAndSize (Pagina, Font_Definida, 8);
				HPDF_Page_TextRect (Pagina,NULL, Altura - 135, larg - 435, Altura - 140,"Col", HPDF_TALIGN_CENTER, NULL);
				HPDF_Page_EndText (Pagina);
				break;
				}
			case 2:
				{		
				HPDF_Page_Rectangle (Pagina, borda_esq+30, alt,  60, 15); //Pagina, margem esquerda, Altura (Margem Superior),margem direita, margem inferior da linha 
				HPDF_Page_Stroke (Pagina);
				HPDF_Page_BeginText (Pagina);
			  	Font_Definida = HPDF_GetFont (PDF_doc, "Times-Roman", "WinAnsiEncoding");
				HPDF_Page_SetFontAndSize (Pagina, Font_Definida, 8);
				HPDF_Page_TextRect (Pagina,NULL, Altura - 135, larg - 340, Altura - 140,"Melg. Colh.", HPDF_TALIGN_CENTER, NULL);
				HPDF_Page_EndText (Pagina);
				break;
				}
			case 3:
				{
				HPDF_Page_Rectangle (Pagina, borda_esq + 90, alt,  45, 15); //Pagina, margem esquerda, Altura (Margem Superior),margem direita, margem inferior da linha 
				HPDF_Page_Stroke (Pagina);
				HPDF_Page_BeginText (Pagina);
			  	Font_Definida = HPDF_GetFont (PDF_doc, "Times-Roman", "WinAnsiEncoding");
				HPDF_Page_SetFontAndSize (Pagina, Font_Definida, 8);
				HPDF_Page_TextRect (Pagina,NULL, Altura - 135, larg - 245, Altura - 140,"Total KG", HPDF_TALIGN_CENTER, NULL);
				HPDF_Page_EndText (Pagina);
				}
			case 4:
				{
				HPDF_Page_Rectangle (Pagina, borda_esq+135, alt,  45, 15); //Pagina, margem esquerda, Altura (Margem Superior),margem direita, margem inferior da linha 
				HPDF_Page_Stroke (Pagina);
				HPDF_Page_BeginText (Pagina);
			  	Font_Definida = HPDF_GetFont (PDF_doc, "Times-Roman", "WinAnsiEncoding");
				HPDF_Page_SetFontAndSize (Pagina, Font_Definida, 8);
				HPDF_Page_TextRect (Pagina,NULL, Altura - 135, larg - 150, Altura - 140,"Melg. Rem.", HPDF_TALIGN_CENTER, NULL);
				HPDF_Page_EndText (Pagina);
				break;
				}
			case 5:
				{
				HPDF_Page_Rectangle (Pagina, borda_esq + 180, alt,  45, 15); //Pagina, margem esquerda, Altura (Margem Superior),margem direita, margem inferior da linha 
				HPDF_Page_Stroke (Pagina);
				HPDF_Page_BeginText (Pagina);
			  	Font_Definida = HPDF_GetFont (PDF_doc, "Times-Roman", "WinAnsiEncoding");
				HPDF_Page_SetFontAndSize (Pagina, Font_Definida, 8);
				HPDF_Page_TextRect (Pagina,NULL, Altura - 135, larg - 55, Altura - 140,"KG Rem.", HPDF_TALIGN_CENTER, NULL);
				HPDF_Page_EndText (Pagina);
				break;
				}
			case 6:
				{										
				HPDF_Page_Rectangle (Pagina, borda_esq + 225, alt,  60, 15); //Pagina, margem esquerda, Altura (Margem Superior),margem direita, margem inferior da linha 
				HPDF_Page_Stroke (Pagina);
				HPDF_Page_BeginText (Pagina);
			  	Font_Definida = HPDF_GetFont (PDF_doc, "Times-Roman", "WinAnsiEncoding");
				HPDF_Page_SetFontAndSize (Pagina, Font_Definida, 8);
				texto2.clear();
				texto2.append("Data Intro.");
				aux_tex = new char[texto2.length()+1];
				strcpy(aux_tex,texto2.c_str());
				HPDF_Page_TextRect (Pagina,NULL, Altura - 135, larg + 45, Altura - 140,converter(aux_tex,1), HPDF_TALIGN_CENTER, NULL);
				HPDF_Page_EndText (Pagina);
				delete aux_tex;
				break;
				}
			case 7:
				{
				HPDF_Page_Rectangle (Pagina, borda_esq + 285, alt,  55, 15); //Pagina, margem esquerda, Altura (Margem Superior),margem direita, margem inferior da linha 
				HPDF_Page_Stroke (Pagina);
				HPDF_Page_BeginText (Pagina);
			  	Font_Definida = HPDF_GetFont (PDF_doc, "Times-Roman", "WinAnsiEncoding");
				HPDF_Page_SetFontAndSize (Pagina, Font_Definida, 8);
				HPDF_Page_TextRect (Pagina,NULL, Altura - 135, larg + 160, Altura - 140,"Rainha", HPDF_TALIGN_CENTER, NULL);
				HPDF_Page_EndText (Pagina);
				break;
				}
			case 8:
				{
				texto2.clear();
				texto2.append("Situação");
				aux_tex = new char[texto2.length()+1];
				strcpy(aux_tex,texto2.c_str());
				HPDF_Page_Rectangle (Pagina, borda_esq + 340, alt,  40, 15); //Pagina, margem esquerda, Altura (Margem Superior),margem direita, margem inferior da linha 
				HPDF_Page_Stroke (Pagina);
				HPDF_Page_BeginText (Pagina);
			  	Font_Definida = HPDF_GetFont (PDF_doc, "Times-Roman", "WinAnsiEncoding");
				HPDF_Page_SetFontAndSize (Pagina, Font_Definida, 8);
				HPDF_Page_TextRect (Pagina,NULL, Altura - 135, larg + 260, Altura - 140,converter(aux_tex,1), HPDF_TALIGN_CENTER, NULL);
				HPDF_Page_EndText (Pagina);
				}
			case 9:
				{
				HPDF_Page_Rectangle (Pagina, borda_esq + 380, alt,  40, 15); //Pagina, margem esquerda, Altura (Margem Superior),margem direita, margem inferior da linha 
				HPDF_Page_Stroke (Pagina);
				HPDF_Page_BeginText (Pagina);
			  	Font_Definida = HPDF_GetFont (PDF_doc, "Times-Roman", "WinAnsiEncoding");
				HPDF_Page_SetFontAndSize (Pagina, Font_Definida, 8);
				HPDF_Page_TextRect (Pagina,NULL, Altura - 135, larg + 335, Altura - 140,"Nota", HPDF_TALIGN_CENTER, NULL);
				HPDF_Page_EndText (Pagina);
				break;
				}
			case 10:
				{
				HPDF_Page_Rectangle (Pagina, borda_esq+ 420, alt,  135, 15); //Pagina, margem esquerda, Altura (Margem Superior),margem direita, margem inferior da linha 
				HPDF_Page_Stroke (Pagina);
				HPDF_Page_BeginText (Pagina);
			  	Font_Definida = HPDF_GetFont (PDF_doc, "Times-Roman", "WinAnsiEncoding");
				HPDF_Page_SetFontAndSize (Pagina, Font_Definida, 8);
				HPDF_Page_TextRect (Pagina,NULL, Altura - 135, larg + 505, Altura - 140,"Obs", HPDF_TALIGN_CENTER, NULL);
				HPDF_Page_EndText (Pagina);
			    break;
				}
			}
		}
	//***************Contando o numero de registros da base de dados para saber o total de paginas *****************************

	sql = new char[256];
	strcpy(sql, "select count(*) from historico.producao where id_apiario=");
	strcat(sql,codigo_apiario);
	this->conexao->executar(sql);
	if (this->conexao->query_result == 3)
		{
		cout << this->conexao->mensagem << endl;
		}
	else
		{
		this->conexao->resultado();
		linha = this->conexao->resultados.at(0);
		//cout << this->conexao->resultado(0,0) << endl;
		ajuste = atoi(linha.at(0).c_str());
		//cout << ajuste<<endl;
		}
	cout<<sql<<endl;
	delete sql;
		
	//******************Selecionando todos os registro do apiario chamado
	sql = new char[256];
	strcpy(sql, "select * from historico.producaotemp where id_apiario=");
	strcat(sql,codigo_apiario);
	this->conexao->executar(sql);
	//delete sql;
	cout<<sql<<endl;
		
	if (this->conexao->query_result == 3)
		{
		cout << this->conexao->mensagem << endl;
		}
	else
		{
		this->total_reg = this->conexao->registros;
		this->total_colunas=this->conexao->colunas;
		this->pags = (3*this->total_reg+ajuste)/48;
		if ((this->pags == 0) && (this->total_reg > 0))
			{
			this->pags++;
			}
		else
			{
			this->pags = (this->total_reg+ajuste)/48;
			this->pags++;
			}
		}
	delete sql;
	string simples_texto;
	int k, borda_inf;
	k=Altura - 160;
	larg = Largura; //valores dos retangulos
	alt=Altura;

	cout<<"Teste de altura e largura   "<<larg<<alt<<endl;
		
	alt-= 175; //175	
	larg-=80;
	borda_esq=25;
	borda_inf = 15; //15
	this->conexao->resultado();
	for(ir=this->conexao->resultados.begin();ir < this->conexao->resultados.end(); ir++)
		{
		linha = *ir;
		rect.top = k+9;
		rect.left = 65;
		rect.right =30 ;
		rect.bottom = rect.top - 5;
		for(j=0; j < this->total_colunas; j++)
			{
			switch (j)
				{
				case 0:
					{
					HPDF_Page_Rectangle (Pagina, borda_esq, alt,  30, borda_inf); //Pagina, margem esquerda, Altura (Margem Superior),margem direita, margem inferior da linha 
					HPDF_Page_Stroke (Pagina);
					//HPDF_Page_BeginText (Pagina);
					
					simples_texto.clear();
					//rect.right +=30;
					HPDF_Page_BeginText (Pagina);
					simples_texto = linha.at(2);
					aux_tex = new char[simples_texto.length()+1];
					strcpy(aux_tex,simples_texto.c_str());
					cout<<aux_tex<<endl;

					HPDF_Page_TextRect (Pagina, 10, rect.top, 60, rect.bottom,(converter(aux_tex,1)), HPDF_TALIGN_CENTER, NULL);
					delete aux_tex;
	
					HPDF_Page_EndText (Pagina);
					break;
					}
				case 1:
					{			
					HPDF_Page_Rectangle (Pagina, borda_esq+30, alt,  60, borda_inf); //Pagina, margem esquerda, Altura (Margem Superior),margem direita, margem inferior da linha 
					HPDF_Page_Stroke (Pagina);				
				
					simples_texto.clear();
					rect.right +=80;
					HPDF_Page_BeginText (Pagina);
					simples_texto = linha.at(7);
					aux_tex = new char[simples_texto.length()+1];
					strcpy(aux_tex,simples_texto.c_str());
					HPDF_Page_TextRect (Pagina, rect.left, rect.top, rect.right, rect.bottom,(converter(aux_tex,1)), HPDF_TALIGN_CENTER, NULL);
					delete aux_tex;
	
					HPDF_Page_EndText (Pagina);
					break;
					}
				case 2:
					{
					HPDF_Page_Rectangle (Pagina, borda_esq + 90, alt,  45, borda_inf); //Pagina, margem esquerda, Altura (Margem Superior),margem direita, margem inferior da linha 
					HPDF_Page_Stroke (Pagina);
				
					rect.right +=100 ;
					simples_texto.clear();
					HPDF_Page_BeginText (Pagina);
					simples_texto = linha.at(8);
					aux_tex = new char[simples_texto.length()+1];
					strcpy(aux_tex,simples_texto.c_str());
					HPDF_Page_TextRect (Pagina, rect.left, rect.top, rect.right, rect.bottom,(converter(aux_tex,1)), HPDF_TALIGN_CENTER, NULL);
					delete aux_tex;
					HPDF_Page_EndText (Pagina);
				
					break;
					}
				case 3:
					{
					HPDF_Page_Rectangle (Pagina, borda_esq+135, alt,  45, borda_inf); //Pagina, margem esquerda, Altura (Margem Superior),margem direita, margem inferior da linha 
					HPDF_Page_Stroke (Pagina);
					
					rect.right +=100 ;
					simples_texto.clear();
					HPDF_Page_BeginText (Pagina);
					simples_texto = linha.at(9);
					aux_tex = new char[simples_texto.length()+1];
					strcpy(aux_tex,simples_texto.c_str());
					HPDF_Page_TextRect (Pagina, rect.left, rect.top, rect.right, rect.bottom,(converter(aux_tex,1)), HPDF_TALIGN_CENTER, NULL);
					delete aux_tex;
					HPDF_Page_EndText (Pagina);
					break;
					}
				case 4:
					{
					HPDF_Page_Rectangle (Pagina, borda_esq + 180, alt,  45, borda_inf); //Pagina, margem esquerda, Altura (Margem Superior),margem direita, margem inferior da linha 
					HPDF_Page_Stroke (Pagina);
				
					rect.right +=85 ;
					simples_texto.clear();
					HPDF_Page_BeginText (Pagina);
					simples_texto = linha.at(10);
					aux_tex = new char[simples_texto.length()+1];
					strcpy(aux_tex,simples_texto.c_str());
					HPDF_Page_TextRect (Pagina, rect.left, rect.top, rect.right, rect.bottom,(converter(aux_tex,1)), HPDF_TALIGN_CENTER, NULL);
					delete aux_tex;
					HPDF_Page_EndText (Pagina);
					break;
					}
				case 5:
					{
					HPDF_Page_Rectangle (Pagina, borda_esq + 225, alt,  60, borda_inf); //Pagina, margem esquerda, Altura (Margem Superior),margem direita, margem inferior da linha 
					HPDF_Page_Stroke (Pagina);
					
					rect.right +=100 ;
					simples_texto.clear();
					HPDF_Page_BeginText (Pagina);
					simples_texto = linha.at(11);
					aux_tex = new char[simples_texto.length()+1];
					strcpy(aux_tex,simples_texto.c_str());
					HPDF_Page_TextRect (Pagina, rect.left, rect.top, rect.right, rect.bottom,(data_formatada(aux_tex, 2)), HPDF_TALIGN_CENTER, NULL);
					delete aux_tex;
					HPDF_Page_EndText (Pagina);
					break;
					}
				case 6:
					{
					HPDF_Page_Rectangle (Pagina, borda_esq + 285, alt,  55, borda_inf); //Pagina, margem esquerda, Altura (Margem Superior),margem direita, margem inferior da linha 
					HPDF_Page_Stroke (Pagina);
					
					rect.right +=120 ;
					simples_texto.clear();
					HPDF_Page_BeginText (Pagina);
					simples_texto = linha.at(12);
					aux_tex = new char[simples_texto.length()+1];
					strcpy(aux_tex,simples_texto.c_str());
					HPDF_Page_TextRect (Pagina, rect.left, rect.top, rect.right, rect.bottom,(converter(aux_tex,1)), HPDF_TALIGN_CENTER, NULL);
					delete aux_tex;
					HPDF_Page_EndText (Pagina);
					break;
					}
				case 8:
					{
					HPDF_Page_Rectangle (Pagina, borda_esq + 340, alt,  40, borda_inf); //Pagina, margem esquerda, Altura (Margem Superior),margem direita, margem inferior da linha 
					HPDF_Page_Stroke (Pagina);
					
					int sit;
					rect.right += 90 ;
					simples_texto.clear();
					HPDF_Page_BeginText (Pagina);
					sit = atoi(linha.at(14).c_str());
					//cout<<sit<<endl;
					switch (sit)
						{
						case 0 :
							{
							simples_texto.append("Sem Reg.");
							break;
							}
						case 1:
							{
							simples_texto.append("PN");
							break;
							}
						case 2:
							{
							simples_texto.append("EXA");
							break;
							}
						case 3:
							{
							simples_texto.append("ZANG");
							break;
							}
						case 4:
							{
							simples_texto.append("RF");
							break;
							}
						case 5:
							{
							simples_texto.append("TR");
							break;
							}
						}
					//simples_texto.append(this->conexao->resultado(i,14));
					aux_tex = new char[simples_texto.length()+1];
					strcpy(aux_tex,simples_texto.c_str());
					HPDF_Page_TextRect (Pagina, rect.left, rect.top, rect.right, rect.bottom,(converter(aux_tex,1)), HPDF_TALIGN_CENTER, NULL);
					delete aux_tex;
					HPDF_Page_EndText (Pagina);
					break;
					}
				case 9:
					{
					HPDF_Page_Rectangle (Pagina, borda_esq + 380, alt,  40, borda_inf); //Pagina, margem esquerda, Altura (Margem Superior),margem direita, margem inferior da linha 
					HPDF_Page_Stroke (Pagina);
					
					int sit;
					rect.right +=80 ;
					simples_texto.clear();
					HPDF_Page_BeginText (Pagina);
					sit = atoi(linha.at(15).c_str());
					//cout<<sit<<endl;
					switch (sit)
						{
						case 0 :
							{
							simples_texto.append("Sem Reg.");
							break;
							}
						case 1:
							{
							simples_texto.append("O");
							break;
							}
						case 2:
							{
							simples_texto.append("B");
							break;
							}
						case 3:
							{
							simples_texto.append("R");
							break;
							}
						case 4:
							{
							simples_texto.append("A");
							break;
							}
						}
					//simples_texto.append(this->conexao->resultado(i,14));
					aux_tex = new char[simples_texto.length()+1];
					strcpy(aux_tex,simples_texto.c_str());
					HPDF_Page_TextRect (Pagina, rect.left, rect.top, rect.right, rect.bottom,(converter(aux_tex,1)), HPDF_TALIGN_CENTER, NULL);
					delete aux_tex;
					HPDF_Page_EndText (Pagina);
					break;
					}
				case 10:
					{
					HPDF_Page_Rectangle (Pagina, borda_esq+ 420, alt,  135, borda_inf); //Pagina, margem esquerda, Altura (Margem Superior),margem direita, margem inferior da linha 
					HPDF_Page_Stroke (Pagina);
					
					rect.right +=130 ;
					simples_texto.clear();
					HPDF_Page_BeginText (Pagina);
					simples_texto = linha.at(16);
					aux_tex = new char[simples_texto.length()+1];
					strcpy(aux_tex,simples_texto.c_str());
					HPDF_Page_TextRect (Pagina, 448, rect.top, 630, rect.bottom,(converter(aux_tex,1)), HPDF_TALIGN_LEFT, NULL);
					delete aux_tex;
					HPDF_Page_EndText (Pagina);								
					break;
					}
		
				}
			}
		k=k-30;
		alt-= 30; //padrão era 30	
		larg=515; //largura padrão da pagina
		borda_esq=25;
		cout<<"Teste do K   "<<k<<endl;
		}

	cout<<"Teste do K   "<<k<<"   "<<linha.at(0)<<endl;
	if (k < 36)
		{
		//HPDF_Page_EndText (this->Pagina);
		set_rodape();
		
		//this->set_cabecalho ();
		//this->set_rodape ();
		k = 765;
		this->pag++;
		this->Pagina = HPDF_AddPage (this->PDF_doc);
		Pagina = HPDF_AddPage (PDF_doc);
		HPDF_Page_SetSize(Pagina,HPDF_PAGE_SIZE_A4,HPDF_PAGE_PORTRAIT);
		Altura = HPDF_Page_GetHeight (Pagina);
		Largura = HPDF_Page_GetWidth (Pagina);
			
		this->set_cabecalho();
		//Setando fonte padrão
		this->Font_Definida = HPDF_GetFont (this->PDF_doc, "Times-Roman", "WinAnsiEncoding");
		HPDF_Page_SetFontAndSize (this->Pagina, this->Font_Definida, 12);
		//k=Altura - /160;
		}

	}
